/*  daterangepicker初始化设置
 *  简直费老劲了
 *  这都第三天了
 */
define(['underscore', 'daterangepicker'], function(_) {
	var util = {
		start: function(options) {
			options.$el = options.$el || $('#datePicker');
			options.isSingle = options.isSingle || false;
			options.showTime = options.showTime || true;
			options.startDate = options.startDate || moment().format('YYYY-MM-DD ');
			options.minDate = options.minDate || moment();

			//如果展示时、分那么日期格式为‘YYYY-MM-DD hh:mm’，否则就是‘YYYY-MM-DD’
			options.dateFormat = options.dateFormat || options.showTime ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD';
			//让开始日期和最小日期对比，如果开始日期小于最小日期，则返回最小日期
			//options.startDate = compare(options.startDate, QueryString.regtime);
			//如果展示时、分那么检查开始的时间有没有时分，没有设置为当前的时分
			/*if (options.showTime) {
			 options.startDate = checkStartDate(options.startDate);
			 options.endDate = checkStartDate(options.endDate);
			 }*/
			//单选配置（包括公共配置）
			var optionSet = {
					singleDatePicker: true, //是否为单个时间选择，否则为两个时间段选择
					startDate: options.startDate, //开始的日期
					//endDate: options.endDate, //结束的日期
					minDate: options.minDate, //最早能选择的时间
					//maxDate: moment(), //最晚能选择的日期（当前的日期）
					format: options.dateFormat, //日期格式
					showDropdowns: false, //是否让年月选择为下拉选择框(为true时好像有bug)
					showWeekNumbers: true, //是否展示周数
					timePicker: false, //是否显示时间选择（时、分）默认不显示
					timePickerIncrement: 1, //分钟的跨度
					timePicker12Hour: false, //是否为12小时制
					buttonClasses: 'btn', //按钮样式
					applyClass: 'btn-success', //确定按钮样式（是和按钮样式组合的）
					cancelClass: 'btn-default', //取消按钮样式（是和按钮样式组合的）
					locale: {
						applyLabel: '确定',
						cancelLabel: '取消',
						fromLabel: '开始',
						toLabel: '结束',
						customRangeLabel: '自定',
						daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
						monthNames: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
						firstDay: 0
					} //汉化
				},
			//时间段配置（覆盖掉上面单选的配置）
				optionSubSet = {
					singleDatePicker: false,
					ranges: {
						'今天': [moment().format('YYYY-MM-DD'), moment()],
						'昨天': [moment().subtract(1, 'days').format('YYYY-MM-DD'), moment().subtract(1, 'days').format('YYYY-MM-DD') + '23:59'],
						'近3天': [moment().subtract(2, 'days'), moment()],
						'近7天': [moment().subtract(6, 'days').format('YYYY-MM-DD'), moment()],
						'近15天': [moment().subtract(14, 'days'), moment()],
						//'近30天': [moment().subtract(29, 'days'), moment()],
						//'当月': [moment().startOf('month'), moment().endOf('month')],
						//'上月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
						'全部': [options.minDate, moment()]
					},
					opens: 'left'
				};
			if (options.isSingle) {
				//设置时间选择器的默认时间
				//options.$el.find('span').html(options.startDate);
			} else {
				options.$el.find('span').html(options.startDate + ' ~ ' + options.endDate);
				_.extend(optionSet, optionSubSet);
			}

			options.$el.daterangepicker(optionSet, options.callback);
			//小三角的位置，默认是在右边的，游戏设置里面需要它在左边 SO
			if (options.site == 'left') {
				$('.daterangepicker').addClass('left-site');
			}
		}
	};
	function checkStartDate(startDate) {
		var arr = startDate.split(' '),
			date = arr[0],
			time = arr[1];
		if (!time) {
			time = moment().format('hh:mm');
		}
		return date + ' ' + time;
	}

	function compare(startDate, minDate) {
		var startDateStamp = Date.parse(new Date(startDate)),
			minDateStamp = Date.parse(new Date(minDate));
		if (startDateStamp < minDateStamp) {
			return minDate;
		} else {
			return startDate;
		}
	}
	return util;
});